package com.dianxin.smartpark.service.visitor;

import com.chinatelecom.response.common.CommonResponseBody;
import com.dianxin.smartpark.dao.qo.visitor.SmartParkVisitorQO;
import com.dianxin.smartpark.service.vo.common.DevicePullDataVo;
import com.dianxin.smartpark.service.vo.visitor.SmartParkVisitorQrVO;
import com.dianxin.smartpark.service.vo.visitor.SmartParkVisitorStaticVO;
import com.dianxin.smartpark.service.vo.visitor.SmartParkVisitorVO;

import javax.validation.Valid;
import java.io.IOException;
import java.util.List;

/**
 * 访客管理接口
 * 
 * @author chenjiasong
 * @date 2021-07-28
 */
public interface SmartParkVisitorService
{
    /**
     * 查询访客管理
     * 
     * @param smartParkVisitorqo 访客管理
     * @return 访客管理
     */
    CommonResponseBody<SmartParkVisitorVO> selectSmartParkVisitor(SmartParkVisitorQO smartParkVisitorqo);

    /**
     * 查询访客管理列表
     *
     * @param smartParkVisitorqo 访客管理
     * @return 访客管理集合
     */
    CommonResponseBody<List<SmartParkVisitorVO>> selectSmartParkVisitorList(SmartParkVisitorQO smartParkVisitorqo);

    /**
     * 查询访客管理
     *
     * @param smartParkVisitorqo 访客管理
     * @return 访客管理
     */
    CommonResponseBody<SmartParkVisitorStaticVO> selectVisitorStatic(SmartParkVisitorQO smartParkVisitorqo);
    /**
     * 获取访客二维码链接
     *
     * @param smartParkVisitorqo 访客管理
     * @return 访客管理集合
     */
    CommonResponseBody<SmartParkVisitorVO> getQrCodeByVisitor(SmartParkVisitorQO smartParkVisitorqo);

    /**
     * 新增访客管理
     * 
     * @param smartParkVisitorvo 访客管理
     * @return 结果
     */
    CommonResponseBody<String> insertSmartParkVisitor(@Valid SmartParkVisitorVO smartParkVisitorvo) throws Exception;

    /**
     * 修改访客管理
     * 
     * @param smartParkVisitorvo 访客管理
     * @return 结果
     */
    CommonResponseBody<Boolean> updateSmartParkVisitor(@Valid SmartParkVisitorVO smartParkVisitorvo);

    /**
     * 删除访客管理信息
     * 
     * @param vo 访客管理
     * @return 结果
     */
    CommonResponseBody<Boolean> deleteSmartParkVisitor(@Valid SmartParkVisitorVO vo);


    /**
     * 访客二维码验证开门
     * @param vo
     * @return
     */
    CommonResponseBody<SmartParkVisitorQrVO> qrCodeVerify(DevicePullDataVo vo) throws Exception;
}
